Service-oriented architecture (SOA) is a specific implementation of software architecture wherein one or more services are configured to be inter-operable and reusable within diverse software platforms and applications. Typically, in an SOA implementation, business processes are deployed within and across organizations as inter-operable services which can be used by applications without warranting any knowledge of service logic implementation. A characteristic of a software service in an SOA is use of the concept of “loose coupling” wherein the software service functionality is decoupled from a requesting application or service.
For implementation of business activities in SOA architecture, coordination of two or more services may be required. The coordination of services is achieved by employing means to connect the services with each other, such as by using Web Services. Since Web Services use standard protocols that are independent of platforms and programming languages, the protocols are used to describe service logic and to pass messages between applications. However, the decoupling of software service functionality carries a performance cost due to network and runtime service overhead. Whenever a client application requires the use of a service, it does so by sending a request message to a server hosting the service “over the wire” and the requested service is executed remotely at the server. In the case where frequently occurring transactions are implemented as services, system performance may be sufficiently degraded due to frequent service requests and executions. An example of a frequently occurring transaction may be identification of type of credit or debit card used during processing of point-of-sale transactions which requires a lookup on a Bank Identification Number (BIN) file.
The basic goal of an SOA is to minimize duplication of commonly used logic in multiple applications by implementing the logic as a reusable service. However, an SOA should be designed so as to minimize number of service requests by client applications in order to reduce service performance deterioration. Further, during architecting and implementing SOA architectures, issues of latency and service overhead need to be addressed with an attempt to minimize them.